package set;

import java.util.TreeSet;

/**
 * @program: play-structure
 * @author: baichen
 * LeetCode804题
 * 将每个字母对应于一个由一系列点和短线组成的字符串，
 * 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。
 **/
public class UniqueMorse {
    public int uniqueMorseRepresentations(String[] words) {
        String[] codes = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
        TreeSet<String> treeSet = new TreeSet<>();  //存放不重复的元素
        for (String word : words) {
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < word.length(); i++) {
                //'a'相当于codes中第一个摩斯密码，作为偏移量
                //char类型的字母表示的是ASCII码,相减即得到对应字母的摩斯密码
                result.append(codes[word.charAt(i) - 'a']);
            }
            treeSet.add(result.toString());
        }
        return treeSet.size();
    }
}
